package com.michael.retail.auth.service;

/**
 * 类功能描述:
 * <pre>
 *   验证码服务
 * </pre>
 *
 * @author Michael
 * @version 1.0
 * @date 2021/7/12 17:23
 */
public interface ValidCodeService {

    /** 默认验证码前缀 */
    String DEFAULT_VALID_CODE_PREFIX = "VALID_CODE";

    /** 默认验证码有效期 单位秒 */
    long DEFAULT_VALID_CODE_EXPIRE = 60;

    /** 设置服务器中的验证码 */
    default void setServerValidCode(String requestId, String validCode) {
        setServerValidCode(DEFAULT_VALID_CODE_PREFIX, requestId, validCode, DEFAULT_VALID_CODE_EXPIRE);
    }

    /** 设置服务器中的验证码 */
    void setServerValidCode(String keyPrefix, String requestId, String validCode, long expireSeconds);

    /** 验证码检验，校验失败抛异常 */
    default void validate(String requestId, String validCode) {
        validate(DEFAULT_VALID_CODE_PREFIX, requestId, validCode);
    }

    /** 验证码检验，校验失败抛异常 */
    void validate(String keyPrefix, String requestId, String validCode);
}
